Mise à jour le 13/11/2021
Le lcwords

Le lcwords


Qu'on résume :
* lcfirst, c'est pour mettre la première lettre d'une chaine en minuscule
* ucfirst, c'est pour mettre la première lettre d'une chaine en majuscule
* ucwords, c'est pour mettre la première lettre de chaque mot d'une chaine en majuscule

lc voulant dire lower case et uc voulant dire upper case.

Quant à words, cela veut dire 'mots', et bien sûr first, c'est pour dire que c'est la première lettre, encore une étrangeté sur le nommage des fonctions et la cohérence de tout ça en PHP (<8.0).
Mais admettons ! La question que je me pose est, "mais pourquoi donc lcfirst existe ?".

Après une rapide recherche sur Github, c'est édifiant :
* lcfirst a été surtout utilisé dans des tests unitaires...
* lcfirst a été utilisé pour générer du code php (ex: générer "$toto = new Toto()" -> on génère le nom de l'instance en fonction de celui de la classe, pareil c'est surement pour faire des tests mais plus surement utiles cette fois, ex2: générer un namespace en fonction du nom du fichier)

je n'ai à ce jour pas d'idée fonctionnelle de l'intérêt de cette fonction mais au moins elle a été utilisée.

Par contre, mais où est la fonction lcwords ?!! Qu'à cela ne tienne, en voici une implémentation :

function lcwords(string $string): string
{
    return implode(' ', array_map(function(string $piece) {
            return lcfirst($piece);
        }, explode(' ', $string)
    ));
}

echo lcwords('THE CAKE IS A LIE');


Le résultat est sans appel :

>tHE cAKE iS a lIE

Chaque première lettre des mots est bien en minuscule, super donc !

Evidemment le nom de la fonction est dans l'esprit du nommage des autres.